package org.jeecg.modules.demo.mall.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @Description: 优惠券表
 * @Author: jeecg-boot
 * @Date: 2023-11-03
 * @Version: V1.0
 */
@Data
@TableName("yx_store_coupon")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "yx_store_coupon对象", description = "优惠券表")
public class YxStoreCoupon implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 优惠券表ID
     */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty(value = "优惠券表ID")
    private Integer id;
    /**
     * 优惠券名称
     */
    @Excel(name = "优惠券名称", width = 15)
    @ApiModelProperty(value = "优惠券名称")
    private String title;
    /**
     * 兑换消耗积分值
     */
    @Excel(name = "兑换消耗积分值", width = 15)
    @ApiModelProperty(value = "兑换消耗积分值")
    private Integer integral;
    /**
     * 兑换的优惠券面值
     */
    @Excel(name = "兑换的优惠券面值", width = 15)
    @ApiModelProperty(value = "兑换的优惠券面值")
    private BigDecimal couponPrice;
    /**
     * 最低消费多少金额可用优惠券
     */
    @Excel(name = "最低消费多少金额可用优惠券", width = 15)
    @ApiModelProperty(value = "最低消费多少金额可用优惠券")
    private BigDecimal useMinPrice;
    /**
     * 优惠券有效期限（单位：天）
     */
    @Excel(name = "优惠券有效期限（单位：天）", width = 15)
    @ApiModelProperty(value = "优惠券有效期限（单位：天）")
    private Integer couponTime;
    /**
     * 排序
     */
    @Excel(name = "排序", width = 15)
    @ApiModelProperty(value = "排序")
    private Integer sort;
    /**
     * 状态（0：关闭，1：开启）
     */
    @Excel(name = "状态（0：关闭，1：开启）", width = 15)
    @ApiModelProperty(value = "状态（0：关闭，1：开启）")
    private Integer status;
    /**
     * 商品ids
     */
    @Excel(name = "商品ids", width = 15)
    @ApiModelProperty(value = "商品ids")
    private String productId;
    /**
     * 优惠券类型 0-通用 1-商品券
     */
    @Excel(name = "优惠券类型 0-通用 1-商品券", width = 15)
    @ApiModelProperty(value = "优惠券类型 0-通用 1-商品券")
    @Dict(dicCode = "Mer_YxStoreCoupon_type")
    private Integer type;
    /**
     * 兑换项目添加时间
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "兑换项目添加时间")
    private Date createTime;
    /**
     * updateTime
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "updateTime")
    private Date updateTime;
    /**
     * 是否删除
     */
    @Excel(name = "是否删除", width = 15)
    @ApiModelProperty(value = "是否删除")
    @TableLogic
    private Integer isDel;

    /**
     * 发放类型(1 平台  2  商家)
     */
    @Dict(dicCode = "Mer_YxStoreCoupon_grant")
    @Excel(name = "发放类型", width = 15)
    @ApiModelProperty(value = "发放类型")
    private Integer grantType;
    /**
     * 优惠券数量
     */
    @Excel(name = "优惠券数量", width = 15)
    @ApiModelProperty(value = "优惠券数量")
    private Integer couponNum;
    /**
     * 可用门店
     */
    @Excel(name = "可用门店", width = 15)
    @ApiModelProperty(value = "可用门店")
    private String merIds;

    /**
     * 限制认领次数
     */
    @Excel(name = "限制认领次数", width = 15)
    @ApiModelProperty(value = "限制认领次数")
    private Integer limitReceiveNum;

    /**
     * 等级限制
     */
    @Excel(name = "等级限制", width = 15)
    @ApiModelProperty(value = "等级限制")
    private Integer userLevelId;

    /**
     * 是否固定日期（0 无时间限制  1 设置开始结束时间）
     */
    @Excel(name = "是否固定日期（0 无时间限制  1 设置开始结束时间）", width = 15)
    @ApiModelProperty(value = "是否固定日期（0 无时间限制  1 设置开始结束时间））")
    private Integer isFixedDate;
    /**
     * 开始时间
     */
    @Excel(name = "优惠券结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;
    /**
     * 结束时间
     */
    @Excel(name = "结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;
    /**
     * 是否指定门店（0 全部门店  1 指定门店）
     */
    @Excel(name = "是否指定门店（0 全部门店  1 指定门店）", width = 15)
    @ApiModelProperty(value = "是否指定门店（0 全部门店  1 指定门店）")
    private Integer isMer;
    /**
     * 是否制定商品（0 所有商品  1 指定商品）
     */
    @Excel(name = "是否制定商品（0 所有商品  1 指定商品））", width = 15)
    @ApiModelProperty(value = "是否制定商品（0 所有商品  1 指定商品）")
    private Integer isProduct;

    /**
     * 优惠券分类（0 满减券  1 折扣券 3 体验券）
     */
    @Excel(name = "优惠券分类（0 满减券  1 折扣券 3 体验券）", width = 15)
    @ApiModelProperty(value = "优惠券分类（0 满减券  1 折扣券 3 体验券）")
    private Integer couponType;
    /**
     * 折扣/满减金额
     */
    @Excel(name = "折扣/满减金额）", width = 15)
    @ApiModelProperty(value = "折扣/满减金额）")
    private BigDecimal discountPrice;
    /**
     * 门店类型 0 平台   1   商家
     **/
    @Excel(name = "门店类型）", width = 15)
    @ApiModelProperty(value = "门店类型")
    private Integer merType;


    /**
     * 开始时间
     */
    @TableField(exist = false)
    private String startT;

    /**
     * 结束时间
     */
    @TableField(exist = false)
    private String endT;


}
